package br.com.sgpv2.service.impostorenda;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import br.com.sgpv2.controler.NegocioExeception;
import br.com.sgpv2.entity.impostorenda.ImpostoRenda;
import br.com.sgpv2.hibernate.impostorenda.ImpostoRendaRepository;

@Service(value = "impostoRendaService")
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class ImpostoRendaServiceImpl implements ImpostoRendaService {

	@Autowired
	ImpostoRendaRepository impostoRendaRepository;

	/** {@inheritDoc} */
	@Override
	public void alterar(ImpostoRenda impostoRenda) {
		impostoRendaRepository.alterar(impostoRenda);
	}

	/** {@inheritDoc} */
	@Override
	public ImpostoRenda buscar(Integer pk) throws NegocioExeception {
		return impostoRendaRepository.buscar(pk);
	}

	/** {@inheritDoc} */
	@Override
	public List<ImpostoRenda> listar() throws Exception {
		return impostoRendaRepository.listar();
	}

	/** {@inheritDoc} */
	@Override
	public void remover(ImpostoRenda impostoRenda) throws Exception {
		impostoRendaRepository.excluir(impostoRenda);
	}

	/** {@inheritDoc} */
	@Override
	public void salvar(ImpostoRenda impostoRenda) throws Exception {
		impostoRendaRepository.salvar(impostoRenda);
	}

	/** {@inheritDoc} */
	@Override
	public void saveOrUpdate(ImpostoRenda impostoRenda) {
		impostoRendaRepository.saveOrUpdate(impostoRenda);
	}

	/** {@inheritDoc} */
	@Override
	public List<ImpostoRenda> consultarPorMesAno(String mes, String ano) {
		return impostoRendaRepository.consultarPorMesAno(mes, ano);
	}

	/**
	 * Recupera o DAO de Imposto de renda.
	 */
	public ImpostoRendaRepository getImpostoRendaRepository() {
		return impostoRendaRepository;
	}

	/**
	 * Configura o DAO de Contribuição previdênciária.
	 */
	public void setImpostoRendaRepository(
			ImpostoRendaRepository impostoRendaRepository) {
		this.impostoRendaRepository = impostoRendaRepository;
	}

}
